package com.mozq.boot.swagger01.config;

import com.mozq.boot.swagger01.properties.MozqProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.io.File;

@Configuration
@EnableConfigurationProperties({MozqProperties.class})
public class MozqConfig implements WebMvcConfigurer {

    /*
     这里注入了mozqProperties，但是不清楚原理，因为使用的是@EnableConfigurationProperties({MozqProperties.class})
     MozqProperties对象并不是Spring中的bean。不能用注解直接注入。
      */
    private MozqProperties mozqProperties;
    public static final String USER_DIR = "user.dir";

    public MozqConfig(MozqProperties mozqProperties){
        this.mozqProperties = mozqProperties;
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        mozqProperties.getResourceMap().forEach((k,v)->{
            // 因为直接使用"/file/**"会被过滤掉特殊字符，所以加上了中括号"[/file/**]"，使用的时候要去除掉。
            String  key = k.substring(1, k.length() - 1);
            registry.addResourceHandler(key).addResourceLocations(v);
            System.out.println(key + "  " + v);
        });
        registry.addResourceHandler("/**").addResourceLocations("file:" + System.getProperty(USER_DIR) + File.separator);
        System.out.println(System.getProperty(USER_DIR));
    }

}
